/*
 * Copyright 2008 Neil Bacon
 * Distributed under the terms of the Mozilla Public License version 1.1
 * or the GNU General Public License version 3.
 */

package nb.xadd.node;

import nb.xadd.node.impl.PolynomialValueNode.PolynomialCoefficients;

public interface NodeFactory {

    Node getConstantValueNode(double constValue);

    Node getLinearValueNode(double constValue, double[] coeff);

    Node getPolynomialValueNode(int numberOfVariables, double constValue, PolynomialCoefficients[] coeff);

    Node getBooleanDecisionNode(int booleanVarIndex, Node trueChild, Node falseChild);

    Node getRealEqualDecisionNode(int realVarIndex, double testValue, Node trueChild, Node falseChild);

    Node getRealGreaterOrEqualDecisionNode(int realVarIndex, double testValue, Node trueChild, Node falseChild);
}
